package com.stone.customer.core.domain.entity;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.choerodon.mybatis.annotation.ModifyAudit;
import io.choerodon.mybatis.annotation.VersionAudit;
import io.choerodon.mybatis.domain.AuditDomain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 用户投诉建议表
 *
 * @author Mr_wenpan@163.com 2021-07-19 21:54:57
 */
@Data
@ApiModel("用户投诉建议表")
@VersionAudit
@ModifyAudit
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@Table(name = "csgvip_complaints")
public class Complaints extends AuditDomain {

	public static final String FIELD_COMPLAINTS_ID = "complaintsId";
	public static final String FIELD_COMPLAINTS_CODE = "complaintsCode";
	public static final String FIELD_CUSTOMER_ID = "customerId";
	public static final String FIELD_COMPLAINTS_ENTER = "complaintsEnter";
	public static final String FIELD_RELATED_DOCUMENT_CODE = "relatedDocumentCode";
	public static final String FIELD_COMPLAINTS_STATUS_CODE = "complaintsStatusCode";
	public static final String FIELD_COMPLAINTS_TYPE_CODE = "complaintsTypeCode";
	public static final String FIELD_MODIFY_TIME = "modifyTime";
	public static final String FIELD_PUSH_VIOLATION_STATUS_CODE = "pushViolationStatusCode";
	public static final String FIELD_REFERENCE_FRAME = "referenceFrame";
	public static final String FIELD_ACTION_REPORTS = "actionReports";
	public static final String FIELD_SUPPLIER_CODE = "supplierCode";
	public static final String FIELD_VIOLATION_DECIDE_BY = "violationDecideBy";
	public static final String FIELD_CANCEL_REASON = "cancelReason";
	public static final String FIELD_SOURCE_FROM = "sourceFrom";

	//
	// 业务方法(按public protected private顺序排列)
	// ------------------------------------------------------------------------------

	//
	// 数据库字段
	// ------------------------------------------------------------------------------


	@ApiModelProperty("表ID，主键")
	@Id
	@GeneratedValue
	private Long complaintsId;
	@ApiModelProperty(value = "投诉建议编码，根据CSGVIP.COMPLAINTS_SUGGESTIONS投诉建议编码规则自动生成", required = true)
	@NotBlank
	private String complaintsCode;
	@ApiModelProperty(value = "用户id", required = true)
	@NotNull
	private Long customerId;
	@ApiModelProperty(value = "投诉建议入口，PRODUCT商品详情，ORDER订单详情，REFUND退款详情，RETURN换货详情，CENTER个人中心")
	private String complaintsEnter;
	@ApiModelProperty(value = "关联单据编码,订单编码/退款单编码/退货单编码/平台商品编码")
	private String relatedDocumentCode;
	@ApiModelProperty(value = "投诉状态，值集：CSGVIP.COMPLAINT_STATUS")
	private String complaintsStatusCode;
	@ApiModelProperty(value = "投诉类型，值集CSGVIP.COMPLAINTS_TYPE")
	private String complaintsTypeCode;
	@ApiModelProperty(value = "修改时间")
	private Date modifyTime;
	@ApiModelProperty(value = "推送违规状态,值集CSGVIP.PUSH_VIOLATION_STATUS")
	private String pushViolationStatusCode;
	@ApiModelProperty(value = "违规参考依据")
	private String referenceFrame;
	@ApiModelProperty(value = "执行结果")
	private String actionReports;
	@ApiModelProperty(value = "供应商编码")
	private String supplierCode;
	@ApiModelProperty(value = "判定人")
	private Long violationDecideBy;
	@ApiModelProperty(value = "取消原因")
	private String cancelReason;
	@ApiModelProperty(value = "渠道来源，值集【O2OF.ORDER_FROM】")
	private String sourceFrom;

	//
	// 非数据库字段
	// ------------------------------------------------------------------------------

}
